package com.xmg.p2p.base.service.impl;

import com.xmg.p2p.base.domain.Logininfo;
import com.xmg.p2p.base.domain.Userinfo;
import com.xmg.p2p.base.domain.VedioAuth;
import com.xmg.p2p.base.mapper.VedioAuthMapper;
import com.xmg.p2p.base.query.PageResult;
import com.xmg.p2p.base.query.VedioAuthQueryObject;
import com.xmg.p2p.base.service.VedioAuthService;
import com.xmg.p2p.base.service.UserinfoService;
import com.xmg.p2p.base.util.BitStatesUtils;
import com.xmg.p2p.base.util.UserContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

@Service
public class VedioAuthServiceImpl implements VedioAuthService {
    @Autowired
    private VedioAuthMapper vedioAuthMapper;

    @Autowired
    private UserinfoService userinfoService;

    //分页查询
    public PageResult query(VedioAuthQueryObject qo) {
        //获取记录数
        int count = this.vedioAuthMapper.queryForCount(qo);
        if (count > 0) {
            //获取记录集合
            List<VedioAuth> list = this.vedioAuthMapper.query(qo);
            //将分页相关的数据，都放在分页对象中
            return new PageResult(list, count, qo.getCurrentPage(),qo.getPageSize());
        }
        return PageResult.empty(qo.getPageSize());
    }

    /**
     * 添加视频对象的审核
     */
    public void audit(Long loginInfoValue, String remark, int state) {
        // 得到审核的用户
        Userinfo applier = this.userinfoService.getById(loginInfoValue);
        // 判断用户是否视频审核通过
        if (applier != null && !applier.getIsVedioAuth()) {
            // 设置好对象的属性
            VedioAuth va = new VedioAuth();
            Logininfo li = new Logininfo();
            li.setId(loginInfoValue);
            va.setApplier(li);//申请人
            va.setAuditor(UserContext.getCurrent());//获取当前的审核人
            va.setApplyTime(new Date());//申请时间
            va.setAuditTime(new Date());//审核时间
            va.setRemark(remark);//审核备注
            va.setState(state);//审核状态
            // 如过视频审核通过 就添加状态码
            if (state == VedioAuth.STATE_AUDIT) {
                applier.addState(BitStatesUtils.OP_VEDIO_AUTH);
                this.userinfoService.update(applier);
            }
            this.vedioAuthMapper.insert(va);
        }
    }
}
